package cn.iocoder.yudao.module.agri.dal.mysql.farmplan;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.agri.dal.dataobject.farmplan.FarmPlanDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.agri.controller.admin.farmplan.vo.*;

/**
 * 种养批次 Mapper
 *
 * @author 广东小蜂
 */
@Mapper
public interface FarmPlanMapper extends BaseMapperX<FarmPlanDO> {

    default PageResult<FarmPlanDO> selectPage(FarmPlanPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<FarmPlanDO>()
                .eqIfPresent(FarmPlanDO::getId, reqVO.getId())
                .likeIfPresent(FarmPlanDO::getCrop, reqVO.getCrop())
                .eqIfPresent(FarmPlanDO::getFarmBase, reqVO.getFarmBase())
                .eqIfPresent(FarmPlanDO::getFarmLand, reqVO.getFarmLand())
                .betweenIfPresent(FarmPlanDO::getBeginDate, reqVO.getBeginDate())
                .betweenIfPresent(FarmPlanDO::getHarvestDate, reqVO.getHarvestDate())
                .eqIfPresent(FarmPlanDO::getBatchNo, reqVO.getBatchNo())
                .eqIfPresent(FarmPlanDO::getFarmModel, reqVO.getFarmModel())
                .eqIfPresent(FarmPlanDO::getStandard, reqVO.getStandard())
                .eqIfPresent(FarmPlanDO::getStatus, reqVO.getStatus())
                .orderByDesc(FarmPlanDO::getId));
    }

    default List<FarmPlanDO> selectList(FarmPlanExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<FarmPlanDO>()
                .eqIfPresent(FarmPlanDO::getId, reqVO.getId())
                .likeIfPresent(FarmPlanDO::getCrop, reqVO.getCrop())
                .eqIfPresent(FarmPlanDO::getFarmBase, reqVO.getFarmBase())
                .eqIfPresent(FarmPlanDO::getFarmLand, reqVO.getFarmLand())
                .betweenIfPresent(FarmPlanDO::getBeginDate, reqVO.getBeginDate())
                .betweenIfPresent(FarmPlanDO::getHarvestDate, reqVO.getHarvestDate())
                .eqIfPresent(FarmPlanDO::getBatchNo, reqVO.getBatchNo())
                .eqIfPresent(FarmPlanDO::getFarmModel, reqVO.getFarmModel())
                .eqIfPresent(FarmPlanDO::getStandard, reqVO.getStandard())
                .eqIfPresent(FarmPlanDO::getStatus, reqVO.getStatus())
                .orderByDesc(FarmPlanDO::getId));
    }

}
